#ifndef MOVEGENERATOR_H_INCLUDED
#define MOVEGENERATOR_H_INCLUDED

#include "go.h"

class Go;

class MoveGenerator
{
friend class Go;

public:
    MoveGenerator(Go * pgo);
    ~MoveGenerator();

public: //interface
    coordinate runABMinMax();

private:
    /** FIXME: 设计一个Go的子类来取代创建mirrorCore的过程 **/
    /**        子类中有特殊的regret以及一个depth变量      **/
    Go * createMirrorCore(); //create a copy of goCore
                             //which is used for searchAlgorithmus and so on...
                             //its not exactly a copy of goCore
                             //only part of copy which is enough for further use
                             //need to delete Go obj manually later!!!

private:
    Go * goCore; //只调用相应接口函数, 不修改成员
};

#endif // MOVEGENERATOR_H_INCLUDED
